package cn.trigram.lang.interfaces;

/**
 * 字符串匹配算法<br/> 1、获取所有出现位置 2、判断是否包含 3、获取首次/最后一次出现位置
 */
public interface StringMatchingAlgorithms {

  /**
   * @param cs
   *     文本字符串
   * @param searchCs
   *     搜索模式
   * @param fromIndex
   *     开始索引
   * @param endIndex
   *     结束索引
   * @return 返回文本字符串中是否包含搜索模式
   */
  boolean contains(CharSequence cs, CharSequence searchCs, int fromIndex, int endIndex);

  /**
   * @param cs
   *     文本字符串
   * @param searchCs
   *     搜索模式
   * @param fromIndex
   *     开始索引
   * @param endIndex
   *     结束索引
   * @return 返回所有索引
   */
  int[] allIndexOf(CharSequence cs, CharSequence searchCs, int fromIndex, int endIndex);

  /**
   * @param cs
   *     文本字符串
   * @param searchCs
   *     搜索模式
   * @param fromIndex
   *     开始索引
   * @param endIndex
   *     结束索引
   * @return 返回首次出现索引
   */
  int indexOf(CharSequence cs, CharSequence searchCs, int fromIndex, int endIndex);

  /**
   * @param cs
   *     文本字符串
   * @param searchCs
   *     搜索模式
   * @param fromIndex
   *     开始索引
   * @param endIndex
   *     结束索引
   * @return 返回最后一次出现索引
   */
  int lastIndexOf(CharSequence cs, CharSequence searchCs, int fromIndex, int endIndex);

}
